<?php

class Orden_Compra_Model extends CI_Model {

    const STR_NOMBRE_TABLA = 'orden_compra';
    const STR_NOMBRE_TABLA_DETALLE = 'orden_compra_detalle';

    /**
     * Constructor
     * @author Fernando Esteban Valerio
     */
    function __construct() {
        parent::__construct();
    }

    /**
     * Registrar la información de una orden de compra.
     * @author Fernando Esteban Valerio
     * @param array $data Arreglo que contiene la informacion de la orden de compra.
     */
    public function insertCabecera($data) {
        $this->db->set('id_solicitud', $data['id_solicitud']);
        $this->db->set('id_usuario', $data['id_usuario']);
        $this->db->set('usuario_registro', $data['usuario_registro']);
        $this->db->set('fecha_registro', $data['fecha_registro']);
        $this->db->set('total_con_igv', $data['total_con_igv']);
        $this->db->set('igv', $data['igv']);
        $this->db->set('total_sin_igv', $data['total_sin_igv']);
        $this->db->insert(self::STR_NOMBRE_TABLA);
    }
    
    /**
     * Registrar la información de una orden de compra.
     * @author Fernando Esteban Valerio
     * @param array $data Arreglo que contiene la informacion de la orden de compra.
     */
    public function insertDetalle($data) {
        $this->db->set('id_orden_compra', $data['id_orden_compra']);
        $this->db->set('id_cotizacion', $data['id_cotizacion']);
        $this->db->set('id_repuesto', $data['id_repuesto']);
        $this->db->set('id_solicitud', $data['id_solicitud']);        
        $this->db->set('usuario_registro', $data['usuario_registro']);
        $this->db->set('fecha_registro', $data['fecha_registro']);
        $this->db->set('cantidad', $data['cantidad']);
        $this->db->set('total', $data['total']);        
        $this->db->insert(self::STR_NOMBRE_TABLA_DETALLE);
    }

    /**
     * Devolver el id insertado.
     * @author Fernando Esteban Valerio
     * @return int
     */
    public function getLastInserted() {
        return $this->db->insert_id();
    }
    
    /**
     * Devuelve el reporte de las ordenes de compra y su detalle
     * @author Leidy Uribe Marcos
     */
    
    public function getOCReporte(){
    	$oc = $this->db->query('SELECT orden_compra.id_orden_de_compra AS id, persona.id_tipo_cliente AS tipCliente, 
    			persona_natural.nombres AS nombre, persona_natural.apellidos AS apellidos, 
    			orden_compra.fecha_registro AS fecha_registro, orden_compra.id_solicitud AS id_solicitud, 
    			modelo.nombre AS modelo, marca.nombre AS marca, ttaller.nombre AS taller, 
    			orden_compra.total_con_igv AS monto
    			
    			FROM persona, persona_natural, orden_compra, modelo, marca, tabla_maestra ttaller, solicitud, usuario
    			WHERE orden_compra.id_usuario = usuario.id_usuario AND
    			usuario.id_persona = persona.id_persona AND
    			persona_natural.id_persona = persona.id_persona AND
    			orden_compra.id_solicitud = solicitud.id_solicitud AND
    			solicitud.id_modelo = modelo.id_modelo AND
    			modelo.id_marca = marca.id_marca AND
    			solicitud.id_taller = ttaller.id_tabla_maestra    			
    	union all
    			SELECT orden_compra.id_orden_de_compra AS id, persona.id_tipo_cliente AS tipCliente, 
    			persona_juridica.razon_social AS razon, persona_juridica.ruc AS ruc, 
    			orden_compra.fecha_registro AS fecha_registro, orden_compra.id_solicitud AS id_solicitud, 
    			modelo.nombre AS modelo, marca.nombre AS marca, ttaller.nombre AS taller, 
    			orden_compra.total_con_igv AS monto
    			
    			FROM persona, persona_juridica, orden_compra, modelo, marca, tabla_maestra ttaller, solicitud, usuario
    			WHERE orden_compra.id_usuario = usuario.id_usuario AND
    			usuario.id_persona = persona.id_persona AND
    			persona_juridica.id_persona = persona.id_persona AND
    			orden_compra.id_solicitud = solicitud.id_solicitud AND
    			solicitud.id_modelo = modelo.id_modelo AND
    			modelo.id_marca = marca.id_marca AND
    			solicitud.id_taller = ttaller.id_tabla_maestra');
    	return $oc->result();
    }
    
    /** metodo para mostrar el detalle de una orden de compra seleccionada
     * @author Leidy Uribe Marcos
     */
    function getOCReporteDetalle($id) {
    	$oc = $this->db->query('SELECT orden_compra.total_con_igv AS monto1, orden_compra.total_sin_igv AS monto2,
    			solicitud.igv AS igv, orden_compra.fecha_registro AS fecha_generada, repuesto.nombre AS repuesto, 
    			repuesto_solicitud.tipo AS tipo, orden_compra_detalle.cantidad AS cantidad, 
    			orden_compra_detalle.total AS total, persona_juridica.razon_social AS razon
    			    
    			FROM orden_compra, repuesto_solicitud, repuesto, solicitud, orden_compra_detalle, cotizacion, usuario,
    			persona, persona_juridica
    			WHERE orden_compra_detalle.id_orden_compra = orden_compra.id_orden_de_compra AND
    			orden_compra_detalle.id_repuesto = repuesto.id_repuesto AND
			    orden_compra.id_solicitud = solicitud.id_solicitud AND			    
			    orden_compra.id_solicitud = repuesto_solicitud.id_solicitud AND
    			orden_compra_detalle.id_solicitud = orden_compra.id_solicitud AND
    			orden_compra_detalle.id_repuesto = repuesto_solicitud.id_repuesto AND
    			orden_compra_detalle.id_cotizacion = cotizacion.id_cotizacion AND
    			cotizacion.id_usuario = usuario.id_usuario AND
    			usuario.id_persona = persona.id_persona AND
    			persona_juridica.id_persona = persona.id_persona AND
			    orden_compra.id_orden_de_compra = ' . $id);
    	return $oc->result();
    }

}
